The present invention relates to Wide Area Network (WAN) communications, and in particular to placing devices at both ends of a communication link to intercept packets and reducing latency by making parallel transport layer connections.
The growth in data communication traffic, including email, client/server applications, multimedia applications, Internet and intranet applications, has continued to cause critical bandwidth shortages across many networks. This demand for instant data communication often exceeds the available capacity, congestion and delay result. As more software applications move from Local Area Networks (LANs) to Wide Area Networks (WANs), user response time increases, and thus can become a critical limiting factor in smooth operation of an enterprise. With offices widely distributed around the globe and present day budgetary constraints on new telecommunications deployments, the implementation of additional wide area links is cost prohibitive for many international installations. Consequently, network system architects need additional solutions to help them efficiently use existing bandwidth to support more applications and more end users.
The Open Systems Interconnection (OSI) reference model is widely used to define the flow of data traffic across a network. The OSI model has seven layers; each of the seven layers communicates with a layer below it through a specific interface and its peer layer on a different system in the network through a specific protocol. The combination of all networking protocol layers is often referred to as the networking stack. Packet based Transmission Control Protocol over Internet Protocol (TCP/IP) is perhaps the most widely known protocol in use in today's WANs such as the Internet and even private networks. IP is a network layer (Layer 3) protocol that defines a set of standards for addressing and routing of packets across a connectionless network.
The Transmission Control Protocol (TCP) layer is a connection oriented protocol that primarily serves to achieve reliable delivery of data. TCP was originally designed for relatively low-speed, unreliable networks. With the emergence of high-speed WANs, various improvements have been applied to TCP to reduce latency and achieve improved bandwidth. For example, one common way to improve the bandwidth and reduce latency while still using TCP on a reliable high-speed network is to tune the so-called “window size” appropriately.
More particularly, an application typically requests data to be sent to another application at a remote machine. The TCP protocol stack, as typically located in the kernel of an operating system of the sending machine, handles requests from various applications and passes data to the network. This TCP stack partitions the data into segments to be sent over appropriate transmission media, i.e., physical layer connections, and waits for an acknowledgement from the receiving application to know that a particular segment has been received correctly. TCP achieves this by defining how long it will wait, i.e., a window size on both the sender and receiver.
The TCP window size thus defines the amount of time that a sender will wait for an acknowledgement from a receiver before sending any more data. Thus, after sending an initial block of data once the window size limit is reached, the sender will stop sending data until an acknowledgement from the receiver is returned. It can be appreciated, therefore, that proper selection of TCP window size is potentially critical in improving performance.
In order to achieve maximum performance, it has been suggested to set the window size to approximately the product of the bandwidth times the expected latency delay. When the sender and receiver are connected by a high-speed WAN, this bandwidth-times-delay product value is quite high, and many packets may be sent before a wait state actually occurs.
However, in order to accomplish this improvement in performance, the TCP window size parameter has to be changed at both the source and destination node in order to achieve maximum throughput. This involves changing parameters for the TCP stack in the kernel and typically has to be done by a system administrator at both ends. Also, in order to determine the optimum window size, a performance analysis must often need be done in order to fine-tune its value. This operation can take at least several hours or maybe even several weeks, and it may not deliver the best theoretical results due to fluctuations in network performance due to other application using the same WAN, network congestion, or other factors beyond the sender and receiver's control.
Some have suggested that an application layer process (i.e., at Layer 7) may be used to improve network performance. This is achieved by using a software application at the sending and receiving nodes that implements a technique known as network striping. The striping application partitions data across several open sockets under control of the application program. See, for example, the technique described in “PS Sockets: The Case for Application Level Network Striping or Data Intensive Applications Using High-Speed Wide Area Networks” by Sivakumar, H., et al., Proceedings of Super Computing 2000 (SC2000), Dallas, Tex., November 2000. However, this approach still requires modification of application layer software at both ends of the connection in order to achieve desired performance improvements.
It is also well known to compress data at a much higher layer, such as at the application layer (i.e., at Layer 7). For instance, images can be compressed in a variety of formats such as the Graphics Interchange Format (.gif) or the Joint Photographic Experts Group format (.jpeg). These data file-encoding formats reduce the space required for storage as well as the bandwidth needed for transmission. Hence, at the application layer a server may encode file before transmission to a client on the other end of a WAN connection. Each file received by the client is then decoded at the application layer to generate the original file. However, this approach also requires modifying standard application layer software at each end of the connection.
International Patent Publication Number WO 01/37516 describes a technique whereby a private network connection is implemented between devices known as accelerator exchange servers. A corresponding accelerator exchange client software is installed at a client node. The accelerator exchange client software may be implemented as a browser program adds on, for example.
U.S. Pat. No. 5,657,452 also discloses a method for setting up a connection over a data network. A proxy engine is used to implement data compression. However, this approach requires also installation of the proxy engine so that it runs in a local endpoint node application.